library(tidyverse)
library(writexl) #for writing objects to tabs in single Excel
package 㤼㸱writexl㤼㸲 was built under R version 4.0.2
library(openxlsx)
library(mosaic)
package 㤼㸱mosaic㤼㸲 was built under R version 4.0.2package 㤼㸱ggformula㤼㸲 was built under R version 4.0.2package 㤼㸱ggstance㤼㸲 was built under R version 4.0.2package 㤼㸱mosaicData㤼㸲 was built under R version 4.0.2
library(psych)
package 㤼㸱psych㤼㸲 was built under R version 4.0.2
library(extrafont)
nepad_group <- read_csv('.//data/nepad_groups.csv') %>%
mutate(afr_union_other = ifelse(afr_union == 'African Union', 'African Union', 'Other'))
Parsed with column specification:
cols(
Country = [31mcol_character()[39m,
Country_2 = [31mcol_character()[39m,
sub_group = [31mcol_character()[39m,
afr_union = [31mcol_character()[39m
)
afdb_cols <- c('African Union' = "#d95f02", 'Other' = 'lightgray')
Data exploration
df_dalys <- readxl::read_xlsx('.//data/DALYs.xlsx') %>%
gather(year, val, 6:41) %>%
mutate(year = as.numeric(year))

cds <- c('OthCommumDis', 'Diabetes', 'AIDS', 'Diarrhea', 'Malaria', 'RespInfec')
ncds <- c('MaligNeoPl', 'CardioVasc', 'Digestive', 'Respiratory', 'OtherNonComm', 'MentalHealth')
inj <- c('TrafficAcc', 'UnIntInj', 'IntInj')
df_dalys <- df_dalys %>%
mutate(dis_cat = ifelse(dimension %in% cds, 'CDs',
ifelse(dimension %in% ncds, 'NCDs',
ifelse(dimension %in% inj, 'Injuries', 'Other'))))

Relative risk of premature death: CDs and NCDs
prob_mort_cat <- readxl::read_xlsx('.//data/prob_mort_cat.xlsx') %>%
gather(year, death_prob, 5:90) %>%
mutate(year = as.numeric(year)) %>%
#these countries/territories do not have data
filter(country != 'Hong Kong' & country != 'Kosovo') %>%
left_join(x=.,
y=nepad_group,
by=c('country' = 'Country_2')) %>%
#from IFs, the scale is chances (probability) per thousand of death,
#so converting it to a more understandable probability scale (0-1)
mutate(death_prob = death_prob / 1000) %>%
spread(death_cat, death_prob)


Clustering
df_mort <- readxl::read_xlsx(path = './/data/mortality_by_type.xlsx') %>%
left_join(x=.,
y=nepad_group,
by='Country')
df_mort_standard_afr$z <- ave(df_mort_standard_afr$death_rate, df_mort_standard_afr$age_cohort, FUN=scale)
#library(NbClust)
#(nbclust_eval <- NbClust(df_mort_standard_afr %>% select(-c(1:5)),
#diss = diss_matrix,
#distance = NULL,
#min.nc = 3,
#max.nc = 10,
#method = "kmeans",
#index = "all"))
kmeans_mort
K-means clustering with 5 clusters of sizes 2, 22, 10, 13, 7
Cluster means:
p1_1_Cardiac p1_1_Diabetes p1_1_Diarrhea p1_1_Digestive
1 -0.3918629 -0.4128533 1.3511926 -0.3985526
p1_1_HIV p1_1_Intentional Injuries p1_1_Malaria
1 -0.09137626 -0.3970479 -0.41395918
p1_1_Malignant Neoplasms p1_1_Mental Health
1 -0.4069980 -0.4049835
p1_1_Other CD p1_1_Other NCD
1 3.261659 0.01534216
p1_1_Other Unintentional Injuries p1_1_Respiratory
1 -0.2972716 -0.4140234
p1_1_Respiratory Infection p1_1_Road Injuries
1 0.8400698 -0.3684028
p1_2_Cardiac p1_2_Diabetes p1_2_Diarrhea p1_2_Digestive
1 -0.3973336 -0.4131970 1.06486611 -0.4041806
p1_2_HIV p1_2_Intentional Injuries p1_2_Malaria
1 -0.07878254 -0.4009819 -0.4139592
p1_2_Malignant Neoplasms p1_2_Mental Health
1 -0.4085642 -0.4084230
p1_2_Other CD p1_2_Other NCD
1 2.5200289 -0.09132581
p1_2_Other Unintentional Injuries p1_2_Respiratory
1 -0.3348044 -0.4140234
p1_2_Respiratory Infection p1_2_Road Injuries
1 0.7097509 -0.3920589
p10_1_Cardiac p10_1_Diabetes p10_1_Diarrhea
1 0.7541940 0.1201731 0.015811810
p10_1_Digestive p10_1_HIV p10_1_Intentional Injuries
1 -0.1834411 13.3665335 0.8096587
p10_1_Malaria p10_1_Malignant Neoplasms
1 -0.4612515 0.23495511
p10_1_Mental Health p10_1_Other CD p10_1_Other NCD
1 -0.006130077 2.7921534 0.351260207
p10_1_Other Unintentional Injuries p10_1_Respiratory
1 0.12801315 -0.1377339
p10_1_Respiratory Infection p10_1_Road Injuries
1 0.319462925 0.54877033
p10_2_Cardiac p10_2_Diabetes p10_2_Diarrhea
1 0.08353871 -0.1278638 -0.2194761
p10_2_Digestive p10_2_HIV p10_2_Intentional Injuries
1 -0.3715445 10.6862196 -0.1506272
p10_2_Malaria p10_2_Malignant Neoplasms
1 -0.4612662 0.1868652
p10_2_Mental Health p10_2_Other CD p10_2_Other NCD
1 -0.3510353 0.7654116 -0.1378778
p10_2_Other Unintentional Injuries p10_2_Respiratory
1 -0.3397459 -0.3340863
p10_2_Respiratory Infection p10_2_Road Injuries
1 -0.1998535 -0.2192479
p11_1_Cardiac p11_1_Diabetes p11_1_Diarrhea
1 1.8373581 0.5975501 0.06245274
p11_1_Digestive p11_1_HIV p11_1_Intentional Injuries
1 -0.2163202 11.4226181 0.601522322
p11_1_Malaria p11_1_Malignant Neoplasms
1 -0.6026900 0.9249459
p11_1_Mental Health p11_1_Other CD p11_1_Other NCD
1 -0.04331136 4.1991656 0.54235809
p11_1_Other Unintentional Injuries p11_1_Respiratory
1 0.19668810 0.005328981
p11_1_Respiratory Infection p11_1_Road Injuries
1 0.54450476 0.50396733
p11_2_Cardiac p11_2_Diabetes p11_2_Diarrhea
1 0.5647317 0.08742175 -0.2647744
p11_2_Digestive p11_2_HIV p11_2_Intentional Injuries
1 -0.4750016 8.2872320 -0.2388775
p11_2_Malaria p11_2_Malignant Neoplasms
1 -0.6027022 0.4830341
p11_2_Mental Health p11_2_Other CD p11_2_Other NCD
1 -0.4626714 0.7940640 -0.1579393
p11_2_Other Unintentional Injuries p11_2_Respiratory
1 -0.4527659 -0.3649881
p11_2_Respiratory Infection p11_2_Road Injuries
1 -0.2512263 -0.3833177
p12_1_Cardiac p12_1_Diabetes p12_1_Diarrhea
1 3.215295 1.208825302 -0.00469681
p12_1_Digestive p12_1_HIV p12_1_Intentional Injuries
1 -0.2697722 7.7034948 0.2686933
p12_1_Malaria p12_1_Malignant Neoplasms
1 -0.7553875 1.8435868
p12_1_Mental Health p12_1_Other CD p12_1_Other NCD
1 -0.1617467 5.0341344 0.59406607
p12_1_Other Unintentional Injuries p12_1_Respiratory
1 0.007555415 0.3033265
p12_1_Respiratory Infection p12_1_Road Injuries
1 0.71673463 0.3393521
p12_2_Cardiac p12_2_Diabetes p12_2_Diarrhea
1 1.2287585 0.5645147 -0.30394709
p12_2_Digestive p12_2_HIV p12_2_Intentional Injuries
1 -0.5672501 5.7682316 -0.3423880
p12_2_Malaria p12_2_Malignant Neoplasms
1 -0.7554146 0.8862814
p12_2_Mental Health p12_2_Other CD p12_2_Other NCD
1 -0.5908729 0.7656353 -0.16180764
p12_2_Other Unintentional Injuries p12_2_Respiratory
1 -0.5842209 -0.3452017
p12_2_Respiratory Infection p12_2_Road Injuries
1 -0.2632480 -0.4940688
p13_1_Cardiac p13_1_Diabetes p13_1_Diarrhea
1 4.060790 1.7599489 0.0003461827
p13_1_Digestive p13_1_HIV p13_1_Intentional Injuries
1 -0.2983363 2.78582370 -0.1140929
p13_1_Malaria p13_1_Malignant Neoplasms
1 -0.8223072 2.4936164
p13_1_Mental Health p13_1_Other CD p13_1_Other NCD
1 -0.2942918 4.7847394 0.5881911
p13_1_Other Unintentional Injuries p13_1_Respiratory
1 -0.2290822 0.7086290
p13_1_Respiratory Infection p13_1_Road Injuries
1 0.71447824 -0.02661423
p13_2_Cardiac p13_2_Diabetes p13_2_Diarrhea
1 1.940966 1.04438180 -0.25959530
p13_2_Digestive p13_2_HIV p13_2_Intentional Injuries
1 -0.6011543 1.7446347 -0.4444172
p13_2_Malaria p13_2_Malignant Neoplasms
1 -0.8223483 1.1690738
p13_2_Mental Health p13_2_Other CD p13_2_Other NCD
1 -0.6536206 0.7685136 -0.16438170
p13_2_Other Unintentional Injuries p13_2_Respiratory
1 -0.6556862 -0.2023173
p13_2_Respiratory Infection p13_2_Road Injuries
1 -0.26969730 -0.5846476
p14_1_Cardiac p14_1_Diabetes p14_1_Diarrhea
1 5.170758 1.5161360 -0.13139393
p14_1_Digestive p14_1_HIV p14_1_Intentional Injuries
1 -0.3747249 0.7467439 -0.4352093
p14_1_Malaria p14_1_Malignant Neoplasms
1 -0.8008767 2.105554
p14_1_Mental Health p14_1_Other CD p14_1_Other NCD
1 -0.4455053 3.4488227 0.4273028
p14_1_Other Unintentional Injuries p14_1_Respiratory
1 -0.3824335 0.95274507
p14_1_Respiratory Infection p14_1_Road Injuries
1 1.1186682 -0.3135799
p14_2_Cardiac p14_2_Diabetes p14_2_Diarrhea
1 3.019291 0.97927085 -0.29173905
p14_2_Digestive p14_2_HIV p14_2_Intentional Injuries
1 -0.5874250 0.4055048 -0.5579830
p14_2_Malaria p14_2_Malignant Neoplasms
1 -0.8009064 0.8845328
p14_2_Mental Health p14_2_Other CD p14_2_Other NCD
1 -0.6501491 0.4930555 -0.23197363
p14_2_Other Unintentional Injuries p14_2_Respiratory
1 -0.6751142 -0.1470142
p14_2_Respiratory Infection p14_2_Road Injuries
1 -0.12468024 -0.6285541
p15_1_Cardiac p15_1_Diabetes p15_1_Diarrhea
1 4.968020 1.3263736 -0.12667650
p15_1_Digestive p15_1_HIV p15_1_Intentional Injuries
1 -0.3851577 -0.02846079 -0.5445457
p15_1_Malaria p15_1_Malignant Neoplasms
1 -0.7707908 1.886741
p15_1_Mental Health p15_1_Other CD p15_1_Other NCD
1 -0.4765386 2.8894797 0.27142080
p15_1_Other Unintentional Injuries p15_1_Respiratory
1 -0.4648672 1.28059279
p15_1_Respiratory Infection p15_1_Road Injuries
1 0.7588713 -0.4517654
p15_2_Cardiac p15_2_Diabetes p15_2_Diarrhea
1 3.426310 1.06299087 -0.24974536
p15_2_Digestive p15_2_HIV p15_2_Intentional Injuries
1 -0.5418490 -0.1797866 -0.5520199
p15_2_Malaria p15_2_Malignant Neoplasms
1 -0.7708201 0.7445506
p15_2_Mental Health p15_2_Other CD p15_2_Other NCD
1 -0.5913627 0.5073990 -0.251146981
p15_2_Other Unintentional Injuries p15_2_Respiratory
1 -0.6581882 0.04118924
p15_2_Respiratory Infection p15_2_Road Injuries
1 -0.14583847 -0.6288579
p16_1_Cardiac p16_1_Diabetes p16_1_Diarrhea
1 4.528292 1.1078319 -0.03470408
p16_1_Digestive p16_1_HIV p16_1_Intentional Injuries
1 -0.3634319 -0.3333139 -0.5957717
p16_1_Malaria p16_1_Malignant Neoplasms
1 -0.7488221 1.5232905
p16_1_Mental Health p16_1_Other CD p16_1_Other NCD
1 -0.4242621 1.7494135 0.148381071
p16_1_Other Unintentional Injuries p16_1_Respiratory
1 -0.5158941 1.95920734
p16_1_Respiratory Infection p16_1_Road Injuries
1 0.5817947 -0.5195635
p16_2_Cardiac p16_2_Diabetes p16_2_Diarrhea
1 3.714518 0.94808694 -0.14485389
p16_2_Digestive p16_2_HIV p16_2_Intentional Injuries
1 -0.4885658 -0.4634864 -0.5756338
p16_2_Malaria p16_2_Malignant Neoplasms
1 -0.7488324 0.50315283
p16_2_Mental Health p16_2_Other CD p16_2_Other NCD
1 -0.4738195 0.10433485 -0.27923505
p16_2_Other Unintentional Injuries p16_2_Respiratory
1 -0.6484481 0.29036153
p16_2_Respiratory Infection p16_2_Road Injuries
1 -0.18738221 -0.6301555
p17_1_Cardiac p17_1_Diabetes p17_1_Diarrhea
1 4.331031 0.89366062 -0.03618968
p17_1_Digestive p17_1_HIV p17_1_Intentional Injuries
1 -0.3792194 -0.4983792 -0.6175758
p17_1_Malaria p17_1_Malignant Neoplasms
1 -0.7259872 1.2859169
p17_1_Mental Health p17_1_Other CD p17_1_Other NCD
1 -0.3259012 1.0864134 0.093358289
p17_1_Other Unintentional Injuries p17_1_Respiratory
1 -0.4989556 1.74739224
p17_1_Respiratory Infection p17_1_Road Injuries
1 0.5399233 -0.5608743
p17_2_Cardiac p17_2_Diabetes p17_2_Diarrhea
1 4.062546 0.75015271 -0.1223339
p17_2_Digestive p17_2_HIV p17_2_Intentional Injuries
1 -0.4672233 -0.5880059 -0.5927311
p17_2_Malaria p17_2_Malignant Neoplasms
1 -0.7260098 0.29314649
p17_2_Mental Health p17_2_Other CD p17_2_Other NCD
1 -0.3166561 -0.03549907 -0.26986049
p17_2_Other Unintentional Injuries p17_2_Respiratory
1 -0.6225137 0.1229542
p17_2_Respiratory Infection p17_2_Road Injuries
1 -0.13503178 -0.6495404
p18_1_Cardiac p18_1_Diabetes p18_1_Diarrhea
1 4.583265 0.6990013 0.130847379
p18_1_Digestive p18_1_HIV p18_1_Intentional Injuries
1 -0.3507224 -0.6439329 -0.6480242
p18_1_Malaria p18_1_Malignant Neoplasms
1 -0.7214269 1.2223416
p18_1_Mental Health p18_1_Other CD p18_1_Other NCD
1 -0.12162099 0.8148221 0.13587177
p18_1_Other Unintentional Injuries p18_1_Respiratory
1 -0.4671017 1.62392865
p18_1_Respiratory Infection p18_1_Road Injuries
1 0.73301295 -0.5709009
p18_2_Cardiac p18_2_Diabetes p18_2_Diarrhea
1 4.793399 0.6063621 0.06543055
p18_2_Digestive p18_2_HIV p18_2_Intentional Injuries
1 -0.4127068 -0.6880947 -0.6176893
p18_2_Malaria p18_2_Malignant Neoplasms
1 -0.7214489 0.22861582
p18_2_Mental Health p18_2_Other CD p18_2_Other NCD
1 -0.08085988 -0.092168177 -0.20369015
p18_2_Other Unintentional Injuries p18_2_Respiratory
1 -0.5960574 0.1322611
p18_2_Respiratory Infection p18_2_Road Injuries
1 0.08381694 -0.6539163
p19_1_Cardiac p19_1_Diabetes p19_1_Diarrhea
1 1.977951 -0.1493091 -0.1865219
p19_1_Digestive p19_1_HIV p19_1_Intentional Injuries
1 -0.5266679 -0.6896633 -0.6822968
p19_1_Malaria p19_1_Malignant Neoplasms
1 -0.7162228 0.1137170
p19_1_Mental Health p19_1_Other CD p19_1_Other NCD
1 -0.2110033 -0.1043256 -0.27991454
p19_1_Other Unintentional Injuries p19_1_Respiratory
1 -0.5712218 0.353299300
p19_1_Respiratory Infection p19_1_Road Injuries
1 0.07371623 -0.6544539
p19_2_Cardiac p19_2_Diabetes p19_2_Diarrhea
1 3.244984 -0.04238365 -0.04690266
p19_2_Digestive p19_2_HIV p19_2_Intentional Injuries
1 -0.5041387 -0.7024033 -0.6627229
p19_2_Malaria p19_2_Malignant Neoplasms
1 -0.7162368 -0.2318507
p19_2_Mental Health p19_2_Other CD p19_2_Other NCD
1 -0.05093171 -0.36944197 -0.35701337
p19_2_Other Unintentional Injuries p19_2_Respiratory
1 -0.6220278 -0.1616366
p19_2_Respiratory Infection p19_2_Road Injuries
1 -0.07976186 -0.6761769
p2_1_Cardiac p2_1_Diabetes p2_1_Diarrhea p2_1_Digestive
1 -0.4025973 -0.4448516 1.1956508 -0.3897557
p2_1_HIV p2_1_Intentional Injuries p2_1_Malaria
1 -0.24371760 -0.4025089 -0.4495051
p2_1_Malignant Neoplasms p2_1_Mental Health
1 -0.4028529 -0.4099503
p2_1_Other CD p2_1_Other NCD
1 0.5754621 -0.2495416
p2_1_Other Unintentional Injuries p2_1_Respiratory
1 -0.09198377 -0.3970335
p2_1_Respiratory Infection p2_1_Road Injuries
1 0.1593323 -0.2485730
p2_2_Cardiac p2_2_Diabetes p2_2_Diarrhea p2_2_Digestive
1 -0.4163720 -0.4465924 0.9896485 -0.4026458
p2_2_HIV p2_2_Intentional Injuries p2_2_Malaria
1 -0.24815979 -0.4179430 -0.4494917
p2_2_Malignant Neoplasms p2_2_Mental Health
1 -0.4156947 -0.4271491
p2_2_Other CD p2_2_Other NCD
1 0.3084066 -0.2987700
p2_2_Other Unintentional Injuries p2_2_Respiratory
1 -0.24082398 -0.4178414
p2_2_Respiratory Infection p2_2_Road Injuries
1 0.03255849 -0.3608324
p3_1_Cardiac p3_1_Diabetes p3_1_Diarrhea p3_1_Digestive
1 -0.4869353 -0.6508670 1.2785070 -0.5299167
p3_1_HIV p3_1_Intentional Injuries p3_1_Malaria
1 4.0732737 -0.3956091 -0.6707082
p3_1_Malignant Neoplasms p3_1_Mental Health
1 -0.3350685 -0.4606792
p3_1_Other CD p3_1_Other NCD
1 1.3003794 -0.24217268
p3_1_Other Unintentional Injuries p3_1_Respiratory
1 1.0839453 -0.5013591
p3_1_Respiratory Infection p3_1_Road Injuries
1 0.2157026 1.2060335
p3_2_Cardiac p3_2_Diabetes p3_2_Diarrhea p3_2_Digestive
1 -0.5390176 -0.6542636 0.9398891 -0.5817879
p3_2_HIV p3_2_Intentional Injuries p3_2_Malaria
1 4.0365825 -0.5045087 -0.6708925
p3_2_Malignant Neoplasms p3_2_Mental Health
1 -0.4278461 -0.5614961
p3_2_Other CD p3_2_Other NCD
1 0.8174140 -0.35382027
p3_2_Other Unintentional Injuries p3_2_Respiratory
1 0.12059411 -0.5686276
p3_2_Respiratory Infection p3_2_Road Injuries
1 0.1039189 0.19610058
p4_1_Cardiac p4_1_Diabetes p4_1_Diarrhea p4_1_Digestive
1 -0.3973141 -0.6331872 0.5510124 -0.4979709
p4_1_HIV p4_1_Intentional Injuries p4_1_Malaria
1 7.4733883 0.007549789 -0.67940270
p4_1_Malignant Neoplasms p4_1_Mental Health
1 -0.254738466 -0.3771662
p4_1_Other CD p4_1_Other NCD
1 1.0943105 -0.18854940
p4_1_Other Unintentional Injuries p4_1_Respiratory
1 1.2464959 -0.4547937
p4_1_Respiratory Infection p4_1_Road Injuries
1 0.05871257 1.17961569
p4_2_Cardiac p4_2_Diabetes p4_2_Diarrhea p4_2_Digestive
1 -0.4272574 -0.6074202 0.352288956 -0.5657364
p4_2_HIV p4_2_Intentional Injuries p4_2_Malaria
1 7.4092691 -0.3921631 -0.67954138
p4_2_Malignant Neoplasms p4_2_Mental Health
1 -0.3459251 -0.4850240
p4_2_Other CD p4_2_Other NCD
1 0.7264904 -0.25844830
p4_2_Other Unintentional Injuries p4_2_Respiratory
1 0.01447761 -0.5452837
p4_2_Respiratory Infection p4_2_Road Injuries
1 -0.029651931 0.114522716
p5_1_Cardiac p5_1_Diabetes p5_1_Diarrhea p5_1_Digestive
1 -0.09250282 -0.5541471 -0.011366725 -0.4458986
p5_1_HIV p5_1_Intentional Injuries p5_1_Malaria
1 7.5671430 3.54005230 -0.6474656
p5_1_Malignant Neoplasms p5_1_Mental Health
1 -0.29542274 -0.1006555
p5_1_Other CD p5_1_Other NCD
1 1.9365685 -0.18232635
p5_1_Other Unintentional Injuries p5_1_Respiratory
1 0.7122623 -0.3822090
p5_1_Respiratory Infection p5_1_Road Injuries
1 0.08664933 2.2313143
p5_2_Cardiac p5_2_Diabetes p5_2_Diarrhea p5_2_Digestive
1 -0.4136810 -0.5711228 0.03593042 -0.5804287
p5_2_HIV p5_2_Intentional Injuries p5_2_Malaria
1 8.4265444 0.1305476 -0.64768995
p5_2_Malignant Neoplasms p5_2_Mental Health
1 -0.4698196 -0.4497700
p5_2_Other CD p5_2_Other NCD
1 1.3651013 -0.3693093
p5_2_Other Unintentional Injuries p5_2_Respiratory
1 -0.2970469 -0.5386421
p5_2_Respiratory Infection p5_2_Road Injuries
1 -0.2265019 0.03884066
p6_1_Cardiac p6_1_Diabetes p6_1_Diarrhea p6_1_Digestive
1 -0.1729135 -0.5151959 0.06639172 -0.4336934
p6_1_HIV p6_1_Intentional Injuries p6_1_Malaria
1 6.6551021 4.5430416 -0.6111945
p6_1_Malignant Neoplasms p6_1_Mental Health
1 -0.37433596 -0.1529216
p6_1_Other CD p6_1_Other NCD
1 2.6313580 -0.22733897
p6_1_Other Unintentional Injuries p6_1_Respiratory
1 0.7563556 -0.4391802
p6_1_Respiratory Infection p6_1_Road Injuries
1 0.12865217 2.5849553
p6_2_Cardiac p6_2_Diabetes p6_2_Diarrhea p6_2_Digestive
1 -0.4178462 -0.5409717 0.16801518 -0.5346783
p6_2_HIV p6_2_Intentional Injuries p6_2_Malaria
1 11.8530267 0.07061761 -0.6113786
p6_2_Malignant Neoplasms p6_2_Mental Health
1 -0.3896286 -0.4299050
p6_2_Other CD p6_2_Other NCD
1 1.3873596 -0.3364180
p6_2_Other Unintentional Injuries p6_2_Respiratory
1 -0.2837941 -0.5114044
p6_2_Respiratory Infection p6_2_Road Injuries
1 -0.1935027 -0.08440369
p7_1_Cardiac p7_1_Diabetes p7_1_Diarrhea p7_1_Digestive
1 -0.12757685 -0.3269727 0.00358540 -0.2867504
p7_1_HIV p7_1_Intentional Injuries p7_1_Malaria
1 11.3856702 2.249635822 -0.4303215
p7_1_Malignant Neoplasms p7_1_Mental Health
1 -0.24943616 -0.1356396
p7_1_Other CD p7_1_Other NCD
1 1.7353168 -0.08911921
p7_1_Other Unintentional Injuries p7_1_Respiratory
1 0.31955367 -0.2839755
p7_1_Respiratory Infection p7_1_Road Injuries
1 0.09125435 1.26245951
p7_2_Cardiac p7_2_Diabetes p7_2_Diarrhea p7_2_Digestive
1 -0.2889543 -0.3723608 -0.03568739 -0.3702866
p7_2_HIV p7_2_Intentional Injuries p7_2_Malaria
1 15.0513810 -0.07935053 -0.4304370
p7_2_Malignant Neoplasms p7_2_Mental Health
1 -0.21193080 -0.3156101
p7_2_Other CD p7_2_Other NCD
1 0.9291683 -0.2047559
p7_2_Other Unintentional Injuries p7_2_Respiratory
1 -0.2507289 -0.3606529
p7_2_Respiratory Infection p7_2_Road Injuries
1 -0.1655677 -0.1460576
p8_1_Cardiac p8_1_Diabetes p8_1_Diarrhea p8_1_Digestive
1 -0.02771983 -0.2315148 0.03937105 -0.2076239
p8_1_HIV p8_1_Intentional Injuries p8_1_Malaria
1 13.2581564 1.39825834 -0.3741153
p8_1_Malignant Neoplasms p8_1_Mental Health
1 -0.13590614 -0.05185234
p8_1_Other CD p8_1_Other NCD
1 1.5043992 0.06803079
p8_1_Other Unintentional Injuries p8_1_Respiratory
1 0.25043753 -0.2331007
p8_1_Respiratory Infection p8_1_Road Injuries
1 0.12145422 0.63397523
p8_2_Cardiac p8_2_Diabetes p8_2_Diarrhea p8_2_Digestive
1 -0.2168165 -0.3018719 -0.08470317 -0.3154706
p8_2_HIV p8_2_Intentional Injuries p8_2_Malaria
1 14.5185616 -0.08886115 -0.3741701
p8_2_Malignant Neoplasms p8_2_Mental Health
1 -0.10055167 -0.2750282
p8_2_Other CD p8_2_Other NCD
1 0.7456575 -0.1559365
p8_2_Other Unintentional Injuries p8_2_Respiratory
1 -0.2430853 -0.3118072
p8_2_Respiratory Infection p8_2_Road Injuries
1 -0.1606123 -0.1886612
p9_1_Cardiac p9_1_Diabetes p9_1_Diarrhea p9_1_Digestive
1 0.2021650251 -0.1271019 0.0293719045 -0.1983114
p9_1_HIV p9_1_Intentional Injuries p9_1_Malaria
1 13.7787612 1.0350687 -0.3909644
p9_1_Malignant Neoplasms p9_1_Mental Health
1 -0.01960528 -0.02106827
p9_1_Other CD p9_1_Other NCD
1 1.9040619 0.184163277
p9_1_Other Unintentional Injuries p9_1_Respiratory
1 0.170049819 -0.1978894
p9_1_Respiratory Infection p9_1_Road Injuries
1 0.18439185 0.54174294
p9_2_Cardiac p9_2_Diabetes p9_2_Diarrhea p9_2_Digestive
1 -0.10040610 -0.2457473 -0.1373717 -0.3225139
p9_2_HIV p9_2_Intentional Injuries p9_2_Malaria
1 12.9833128 -0.09745977 -0.3910063
p9_2_Malignant Neoplasms p9_2_Mental Health
1 0.00771411 -0.2884575
p9_2_Other CD p9_2_Other NCD
1 0.8078554 -0.1480712
p9_2_Other Unintentional Injuries p9_2_Respiratory
1 -0.2714175 -0.3086244
p9_2_Respiratory Infection p9_2_Road Injuries
1 -0.1619444 -0.1821101
[ reached getOption("max.print") -- omitted 4 rows ]
Clustering vector:
[1] 3 2 2 5 4 4 4 3 4 4 2 4 2 4 2 3 2 2 2 2 2 2 4 4 2 1 2
[28] 3 2 5 4 2 3 3 5 5 4 2 2 3 2 3 4 2 5 3 4 1 2 2 3 2 5 5
Within cluster sum of squares by cluster:
[1] 303.2775 1617.0200 376.0029 2237.1498 787.7763
(between_SS / total_SS = 62.2 %)
Available components:
[1] "cluster" "centers" "totss"
[4] "withinss" "tot.withinss" "betweenss"
[7] "size" "iter" "ifault"
fviz_cluster(kmeans_mort,
data=df_mort_standard_afr %>% select(-c(1:5)),
stand = FALSE,
ellipse.type = "convex",
palette = "jco") +
pardee.theme
Registered S3 method overwritten by 'data.table':
method from
print.data.table

kmeans_mort$cluster <- factor(kmeans_mort$cluster)
centers_mort <- as.data.frame(kmeans_mort$centers) %>%
rownames_to_column(., var = 'cluster_number') %>%
gather(age_sex_cause, z_death_rate, 2:571) %>%
separate(age_sex_cause, into = c('age_cohort', 'sex', 'Cause'), sep = "_") %>%
spread(age_cohort, z_death_rate)
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPVRSVUUsIG1lc3NhZ2U9RkFMU0V9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkod3JpdGV4bCkgICAgICAgICAgICAjZm9yIHdyaXRpbmcgb2JqZWN0cyB0byB0YWJzIGluIHNpbmdsZSBFeGNlbA0KbGlicmFyeShvcGVueGxzeCkNCmxpYnJhcnkobW9zYWljKQ0KbGlicmFyeShwc3ljaCkNCmxpYnJhcnkoZXh0cmFmb250KQ0KbGlicmFyeShmYWN0b2V4dHJhKQ0KYGBgDQoNCmBgYHtyfQ0KbmVwYWRfZ3JvdXAgPC0gcmVhZF9jc3YoJy4vL2RhdGEvbmVwYWRfZ3JvdXBzLmNzdicpICU+JSANCiAgbXV0YXRlKGFmcl91bmlvbl9vdGhlciA9IGlmZWxzZShhZnJfdW5pb24gPT0gJ0FmcmljYW4gVW5pb24nLCAnQWZyaWNhbiBVbmlvbicsICdPdGhlcicpKQ0KYGBgDQoNCmBgYHtyfQ0KYWZkYl9jb2xzIDwtIGMoJ0FmcmljYW4gVW5pb24nID0gIiNkOTVmMDIiLCAnT3RoZXInID0gJ2xpZ2h0Z3JheScpDQpgYGANCg0KDQojIERhdGEgZXhwbG9yYXRpb24NCg0KYGBge3J9DQpkZl9kYWx5cyA8LSByZWFkeGw6OnJlYWRfeGxzeCgnLi8vZGF0YS9EQUxZcy54bHN4JykgJT4lIA0KICBnYXRoZXIoeWVhciwgdmFsLCA2OjQxKSAlPiUgDQogIG11dGF0ZSh5ZWFyID0gYXMubnVtZXJpYyh5ZWFyKSkNCmBgYA0KDQpgYGB7ciB2aXpfZGFseXMsIGluY2x1ZGU9VFJVRSwgZmlnLmhlaWdodD02LjJ9DQpkZl9kYWx5cyAlPiUgDQogIGZpbHRlcih2YXIgIT0gJ0RBTFlzUEMnKSAlPiUgDQogIGdncGxvdCguKSArIA0KICBnZW9tX2xpbmUoYWVzKHg9eWVhciwNCiAgICAgICAgICAgICAgICB5PXZhbCwNCiAgICAgICAgICAgICAgICBjb2xvcj12YXIsDQogICAgICAgICAgICAgICAgZ3JvdXA9dmFyKSwgc2l6ZT0xLjc1KSArIA0KICBmYWNldF93cmFwKH5jb3VudHJ5KSArIA0KICBwYXJkZWUudGhlbWUNCmBgYA0KDQpgYGB7cn0NCmNkcyA8LSBjKCdPdGhDb21tdW1EaXMnLCAnRGlhYmV0ZXMnLCAnQUlEUycsICdEaWFycmhlYScsICdNYWxhcmlhJywgJ1Jlc3BJbmZlYycpDQpuY2RzIDwtIGMoJ01hbGlnTmVvUGwnLCAnQ2FyZGlvVmFzYycsICdEaWdlc3RpdmUnLCAnUmVzcGlyYXRvcnknLCAnT3RoZXJOb25Db21tJywgJ01lbnRhbEhlYWx0aCcpDQppbmogPC0gYygnVHJhZmZpY0FjYycsICdVbkludEluaicsICdJbnRJbmonKQ0KYGBgDQoNCmBgYHtyfQ0KZGZfZGFseXMgPC0gZGZfZGFseXMgJT4lIA0KICBtdXRhdGUoZGlzX2NhdCA9IGlmZWxzZShkaW1lbnNpb24gJWluJSBjZHMsICdDRHMnLA0KICAgICAgICAgICAgICAgICAgIGlmZWxzZShkaW1lbnNpb24gJWluJSBuY2RzLCAnTkNEcycsDQogICAgICAgICAgICAgICAgICAgaWZlbHNlKGRpbWVuc2lvbiAlaW4lIGluaiwgJ0luanVyaWVzJywgJ090aGVyJykpKSkNCmBgYA0KDQoNCmBgYHtyIHZpel9kYWx5c18yLCBpbmNsdWRlPVRSVUUsIGZpZy5oZWlnaHQ9Ni4yfQ0KZGZfZGFseXMgJT4lIA0KICBmaWx0ZXIodmFyID09ICdEQUxZc1BDJykgJT4lIA0KICBtdXRhdGUoc3BvdGxpZ2h0X2RpbSA9IGlmZWxzZShkaW1lbnNpb24gPT0gJ0FJRFMnLCAnc3BvdGxpZ2h0JywgJ290aGVyJykpICU+JSANCiAgZ2dwbG90KC4pICsgDQogIGdlb21fbGluZShhZXMoeD15ZWFyLA0KICAgICAgICAgICAgICAgIHk9dmFsLA0KICAgICAgICAgICAgICAgIGNvbG9yPXNwb3RsaWdodF9kaW0sDQogICAgICAgICAgICAgICAgZ3JvdXA9ZGltZW5zaW9uKSwgc2l6ZT0xLjc1KSArIA0KICBmYWNldF9ncmlkKGRpc19jYXR+Y291bnRyeSkgKyANCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoJ3Nwb3RsaWdodCcgPSAncmVkJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ290aGVyJyA9ICdncmF5NjAnKSwNCiAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoJ3Nwb3RsaWdodCcgPSAnQUlEUycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvdGhlcicgPSAnT3RoZXInKSkgKyANCiAgcGFyZGVlLnRoZW1lDQogIA0KYGBgDQoNCg0KIyBSZWxhdGl2ZSByaXNrIG9mIHByZW1hdHVyZSBkZWF0aDogQ0RzIGFuZCBOQ0RzDQoNCg0KYGBge3J9DQpwcm9iX21vcnRfY2F0IDwtIHJlYWR4bDo6cmVhZF94bHN4KCcuLy9kYXRhL3Byb2JfbW9ydF9jYXQueGxzeCcpICU+JSANCiAgZ2F0aGVyKHllYXIsIGRlYXRoX3Byb2IsIDU6OTApICU+JSANCiAgbXV0YXRlKHllYXIgPSBhcy5udW1lcmljKHllYXIpKSAlPiUgDQogICN0aGVzZSBjb3VudHJpZXMvdGVycml0b3JpZXMgZG8gbm90IGhhdmUgZGF0YQ0KICBmaWx0ZXIoY291bnRyeSAhPSAnSG9uZyBLb25nJyAmIGNvdW50cnkgIT0gJ0tvc292bycpICU+JSANCiAgbGVmdF9qb2luKHg9LiwNCiAgICAgICAgICAgIHk9bmVwYWRfZ3JvdXAsDQogICAgICAgICAgICBieT1jKCdjb3VudHJ5JyA9ICdDb3VudHJ5XzInKSkgJT4lIA0KICAjZnJvbSBJRnMsIHRoZSBzY2FsZSBpcyBjaGFuY2VzIChwcm9iYWJpbGl0eSkgcGVyIHRob3VzYW5kIG9mIGRlYXRoLCANCiAgI3NvIGNvbnZlcnRpbmcgaXQgdG8gYSBtb3JlIHVuZGVyc3RhbmRhYmxlIHByb2JhYmlsaXR5IHNjYWxlICgwLTEpDQogIG11dGF0ZShkZWF0aF9wcm9iID0gZGVhdGhfcHJvYiAvIDEwMDApICU+JSANCiAgc3ByZWFkKGRlYXRoX2NhdCwgZGVhdGhfcHJvYikNCmBgYA0KDQpgYGB7ciBmaWcuaGVpZ2h0PTksIGZpZy53aWR0aD0xMn0NCnByb2JfbW9ydF9jYXQgJT4lIA0KICBmaWx0ZXIoeWVhciA9PSAyMDE1IHwgeWVhciA9PSAyMDMwKSAlPiUgDQogIGdncGxvdCguLA0KICAgICAgICAgYWVzKHg9VG90Q29tRGlzLA0KICAgICAgICAgICAgIHk9VG90Tm9uQ29tRGlzKSkgKyANCiAgZ2VvbV9wb2ludChhZXMoY29sb3I9YWZyX3VuaW9uX290aGVyKSwgc2l6ZT0yKSArIA0KICBnZW9tX2FibGluZShzbG9wZSA9IDEsIGludGVyY2VwdCA9IDAsIGxpbmV0eXBlID0gJ2Rhc2hlZCcpICsgDQogIGdndGl0bGUoJ1Byb2JhYmlsaXR5IG9mIGR5aW5nIHByZW1hdHVyZWx5OiBjb21tdW5pY2FibGUgdnMuIG5vbi1jb21tdW5pY2FibGUgY2F1c2VzJywNCiAgICAgICAgICBzdWJ0aXRsZSA9ICdJRnMgQmFzZSBDYXNlIHY3LjM4JykgKyANCiAgI2dncmVwZWw6Omdlb21fdGV4dF9yZXBlbChkYXRhPS4gJT4lIGZpbHRlcihUb3RDb21EaXMgPiBUb3ROb25Db21EaXMpLA0KICAgIyAgICAgICAgICAgICAgICAgICAgICAgIGFlcyhsYWJlbCA9IGNvdW50cnkpKSArIA0KICBmYWNldF9ncmlkKHllYXIgfiBkaW0pICsgDQogIGxhYnMoeD0nQ0RzOiBQcm9iYWJpbGl0eSBvZiBwcmVtYXR1cmUgZGVhdGgnLA0KICAgICAgIHk9J05DRHM6IFByb2JhYmlsaXR5IG9mIHByZW1hdHVyZSBkZWF0aCcpICsgDQogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBhZmRiX2NvbHMpICsgDQogIHBhcmRlZS50aGVtZQ0KYGBgDQoNCmBgYHtyIGZpZy5oZWlnaHQ9Ni4yLCBmaWcud2lkdGg9MTJ9DQpwcm9iX21vcnRfY2F0ICU+JSANCiAgZ2F0aGVyKGRlYXRoX2NhdCwgZGVhdGhfcHJvYiwgOToxMCkgJT4lIA0KICBmaWx0ZXIoeWVhciA9PSAyMDMwIHwgeWVhciA9PSAyMDE1LA0KICAgICAgICAgZGVhdGhfY2F0ID09ICdUb3ROb25Db21EaXMnKSAlPiUgDQogIHNwcmVhZChkaW0sIGRlYXRoX3Byb2IpICU+JSANCiAgZ2dwbG90KC4sDQogICAgICAgICBhZXMoeD1GZW1hbGUsDQogICAgICAgICAgICAgeT1NYWxlKSkgKyANCiAgZ2d0aXRsZSgnUHJvYmFiaWxpdHkgb2YgZHlpbmcgZnJvbSBOQ0RzIGJ5IGdlbmRlciwgMjAxNSBhbmQgMjAzMCcsDQogICAgICAgICAgc3VidGl0bGUgPSAnSUZzIEJhc2UgQ2FzZSB2Ny4zOCcpICsgDQogIGdlb21fcG9pbnQoYWVzKGNvbG9yPWFmcl91bmlvbl9vdGhlciksIHNpemU9MikgKyANCiAgZ2VvbV9hYmxpbmUoc2xvcGUgPSAxLCBpbnRlcmNlcHQgPSAwLCBsaW5ldHlwZSA9ICdkYXNoZWQnKSArIA0KICAjZ2dyZXBlbDo6Z2VvbV90ZXh0X3JlcGVsKGRhdGE9LiAlPiUgZmlsdGVyKEZlbWFsZSA+IE1hbGUpLA0KICAgIyAgICAgICAgICAgICAgICAgICAgICAgIGFlcyhsYWJlbCA9IGNvdW50cnkpKSArIA0KICBmYWNldF93cmFwKH55ZWFyKSArIA0KICBsYWJzKHg9J0ZlbWFsZTogcHJvYmFiaWxpdHkgb2YgcHJlbWF0dXJlIGRlYXRoIGZyb20gQ0RzJywNCiAgICAgICB5PSdNYWxlOiBwcm9iYWJpbGl0eSBvZiBwcmVtYXR1cmUgZGVhdGggZnJvbSBDRHMnKSArIA0KICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYWZkYl9jb2xzKSArIA0KICBwYXJkZWUudGhlbWUNCmBgYA0KDQoNCiMgQ2x1c3RlcmluZyANCg0KYGBge3J9DQpkZl9tb3J0IDwtIHJlYWR4bDo6cmVhZF94bHN4KHBhdGggPSAnLi8vZGF0YS9tb3J0YWxpdHlfYnlfdHlwZS54bHN4JykgJT4lIA0KICBsZWZ0X2pvaW4oeD0uLA0KICAgICAgICAgICAgeT1uZXBhZF9ncm91cCwNCiAgICAgICAgICAgIGJ5PSdDb3VudHJ5JykNCg0KYGBgDQoNCmBgYHtyfQ0KKGRmX21vcnRfc3RhbmRhcmQgPC0gZGZfbW9ydCAlPiUgDQogIGdhdGhlcihhZ2VfY29ob3J0LCBkZWF0aF9yYXRlLCA1OjIzKSkNCmBgYA0KDQpgYGB7cn0NCihkZl9tb3J0X3N0YW5kYXJkX2FmciA8LSBkZl9tb3J0X3N0YW5kYXJkICU+JSANCiAgZmlsdGVyKGFmcl91bmlvbiA9PSAnQWZyaWNhbiBVbmlvbicpKQ0KYGBgDQoNCmBgYHtyfQ0KZGZfbW9ydF9zdGFuZGFyZF9hZnINCiAgZ3JvdXBfYnkoQ291bnRyeSwgc2V4LCBDYXVzZSwgYWdlX2NvaG9ydCkgJT4lIA0KICBtdXRhdGUoZGVhdGhfcmF0ZSA9IHNjYWxlKGRlYXRoX3JhdGUpKQ0KYGBgDQoNCg0KYGBge3J9DQpkZl9tb3J0X3N0YW5kYXJkX2FmciR6IDwtIGF2ZShkZl9tb3J0X3N0YW5kYXJkX2FmciRkZWF0aF9yYXRlLCBkZl9tb3J0X3N0YW5kYXJkX2FmciRhZ2VfY29ob3J0LCBGVU49c2NhbGUpDQpgYGANCg0KDQpgYGB7cn0NCmRmX21vcnRfc3RhbmRhcmRfYWZyICU+JSANCiAgbXV0YXRlKGFnZV9zZXhfY2F1c2UgPSBwYXN0ZShhZ2VfY29ob3J0LCBzZXgsIENhdXNlLCBzZXAgPSAiXyIpKSAlPiUgDQogIHNlbGVjdCgtYyhkZWF0aF9yYXRlLCBhZ2VfY29ob3J0LCBzZXgsIENhdXNlLCBDYXVzZUlEKSkgJT4lIA0KICBzcHJlYWQoYWdlX3NleF9jYXVzZSwgeikNCmBgYA0KDQoNCmBgYHtyfQ0KKGRmX21vcnRfc3RhbmRhcmRfYWZyIDwtIGRmX21vcnRfc3RhbmRhcmRfYWZyICU+JSANCiAgbXV0YXRlKGFnZV9zZXhfY2F1c2UgPSBwYXN0ZShhZ2VfY29ob3J0LCBzZXgsIENhdXNlLCBzZXAgPSAiXyIpKSAlPiUgDQogIHNlbGVjdCgtYyhkZWF0aF9yYXRlLCBhZ2VfY29ob3J0LCBzZXgsIENhdXNlLCBDYXVzZUlEKSkgJT4lIA0KICBzcHJlYWQoYWdlX3NleF9jYXVzZSwgeikpDQpgYGANCg0KYGBge3J9DQpkZl9tb3J0X3N0YW5kYXJkX2FmciAlPiUgc2VsZWN0KC1jKDE6NSkpDQpgYGANCg0KDQpgYGB7cn0NCiNsaWJyYXJ5KE5iQ2x1c3QpDQojKG5iY2x1c3RfZXZhbCA8LSBOYkNsdXN0KGRmX21vcnRfc3RhbmRhcmRfYWZyICU+JSBzZWxlY3QoLWMoMTo1KSksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICNkaXNzID0gZGlzc19tYXRyaXgsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgI2Rpc3RhbmNlID0gTlVMTCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgI21pbi5uYyA9IDMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgI21heC5uYyA9IDEwLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbWV0aG9kID0gImttZWFucyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luZGV4ID0gImFsbCIpKQ0KYGBgDQoNCg0KYGBge3J9DQprbWVhbnNfbW9ydCA8LSBrbWVhbnMoZGZfbW9ydF9zdGFuZGFyZF9hZnIgJT4lIHNlbGVjdCgtYygxOjUpKSwgNSkNCg0Ka21lYW5zX21vcnQNCmBgYA0KDQpgYGB7cn0NCmRhdGEuZnJhbWUoa21lYW5zX21vcnQkY2VudGVycykNCmBgYA0KDQoNCmBgYHtyfQ0KKGRmX2NsdXN0ZXJfNV9yZXN1bHRzIDwtIGttZWFuc19tb3J0ICU+JSANCiAgYnJvb206OmF1Z21lbnQoZGZfbW9ydF9zdGFuZGFyZF9hZnIpICU+JSANCiAgdW5ncm91cCgpICU+JSANCiAgc2VsZWN0KC5jbHVzdGVyLCBldmVyeXRoaW5nKCkpICU+JSANCiAgbXV0YXRlKC5jbHVzdGVyID0gYXMuY2hhcmFjdGVyKC5jbHVzdGVyKSkpDQoNCiNjYmluZChkZl9tb3J0X3N0YW5kYXJkX2Fmciwga21lYW5zX21vcnQkY2x1c3RlcikgJT4lIA0KICAjZ2F0aGVyKGFnZV9zZXhfY2F1c2UsIHpfZGVhdGhfcmF0ZSwgNDo1NzMpICU+JSANCiAgI3JlbmFtZShjbHVzdGVyX251bWJlciA9ICdrbWVhbnNfbW9ydCRjbHVzdGVyJykgJT4lIA0KICAjYXJyYW5nZShjbHVzdGVyX251bWJlcikNCmBgYA0KDQpgYGB7cn0NCmRmX2NsdXN0ZXJfNV9yZXN1bHRzICU+JSANCiAgZmlsdGVyKC5jbHVzdGVyID09ICc0JykNCmBgYA0KDQoNCmBgYHtyIGZpZy5oZWlnaHQ9Ni4yfQ0KZnZpel9jbHVzdGVyKGttZWFuc19tb3J0LCANCiAgICAgICAgICAgICBkYXRhPWRmX21vcnRfc3RhbmRhcmRfYWZyICU+JSBzZWxlY3QoLWMoMTo1KSksDQogICAgICAgICAgICAgc3RhbmQgPSBGQUxTRSwgDQogICAgICAgICAgICAgZWxsaXBzZS50eXBlID0gImNvbnZleCIsDQogICAgICAgICAgICAgcGFsZXR0ZSA9ICJqY28iKSArIA0KICBwYXJkZWUudGhlbWUNCmBgYA0KDQoNCmBgYHtyfQ0Ka21lYW5zX21vcnQkY2x1c3RlciA8LSBmYWN0b3Ioa21lYW5zX21vcnQkY2x1c3RlcikNCg0KY2VudGVyc19tb3J0IDwtIGFzLmRhdGEuZnJhbWUoa21lYW5zX21vcnQkY2VudGVycykgJT4lIA0KICByb3duYW1lc190b19jb2x1bW4oLiwgdmFyID0gJ2NsdXN0ZXJfbnVtYmVyJykgJT4lIA0KICBnYXRoZXIoYWdlX3NleF9jYXVzZSwgel9kZWF0aF9yYXRlLCAyOjU3MSkgJT4lIA0KICBzZXBhcmF0ZShhZ2Vfc2V4X2NhdXNlLCBpbnRvID0gYygnYWdlX2NvaG9ydCcsICdzZXgnLCAnQ2F1c2UnKSwgc2VwID0gIl8iKSAlPiUgDQogIHNwcmVhZChhZ2VfY29ob3J0LCB6X2RlYXRoX3JhdGUpDQpgYGANCg0KDQpgYGB7cn0NCmNlbnRlcnNfbW9ydCAlPiUgDQogIGFycmFuZ2UoY2x1c3Rlcl9udW1iZXIpICU+JSANCiAgc2VsZWN0KDE6MywgJ3AxJywgJ3AyJywgJ3AzJywgJ3A0JywgJ3A1JykgJT4lIA0KICBmaWx0ZXIoQ2F1c2UgPT0gJ0NhcmRpYWMnKQ0KYGBgDQoNCmBgYHtyfQ0KZGZfbW9ydCAlPiUgDQogIGFycmFuZ2UoLXAxKQ0KYGBg